﻿
#ifndef HOVERINGRIPPLEBUTTON_H
#define HOVERINGRIPPLEBUTTON_H

#include <QFrame>
#include <QFrame>
#include <QPushButton>
#include <QWidget>
#include <QPainter>
#include <QPainterPath>
#include <QTimer>
#include <QMouseEvent>
#include <QPropertyAnimation>
#include <QtCore/qmath.h>

//悬浮波纹按钮
class HoveringRippleButton : public QFrame
{
    Q_OBJECT
public:
    HoveringRippleButton(QWidget *parent = nullptr);
    HoveringRippleButton(QWidget *parent = nullptr, const QRect &geometry = QRect(), const QSize &minSize = QSize());
    ~HoveringRippleButton();

private:
    QRect geometry;
    QSize minSize;
    QPushButton *m_pPushButton;
    int corner_radius;              // 按钮的圆角半径
    int radius_var;                 // 半径变化值
    int radius;                     // 起始半径
    qreal max_radius;               // 最大半径
    QPoint center;                  // 鼠标点击坐标
    QColor color;                   // 填充颜色
    int msec;                       // 定时时间
    QTimer *m_pTimer;
    void initUI();
    void initAnimationConfig();     // 初始化动画配置
    void enterEvent(QEvent *event) override;//重写处理鼠标光标进入部件的事件
    void leaveEvent(QEvent *event) override;//重写处理鼠标光标离开部件的事件
    void paintEvent(QPaintEvent *event) override;//重写绘制事件
private slots:
    void incRadius();
    void decRadius();

};

#endif // HOVERINGRIPPLEBUTTON_H
